/**
 * 一作业回顾:
 * 作业：写一段程序，可以指定写入的文件数量与内容
 * 问题：主要功能集中，不太利于维护与扩展
 * 
 * 
 */

let fs = require("fs");
//在fs模块中没Sync的函数是异步函数
//open(path, flags[, mode])
//path 路径
// flags 标识 r w a(append)
// mode 不需求
// callback 一个回调函数
// 异步函数是没返回值都是通过callbak 回调函数去处理
// 1.回调的‘写入完成’后输出 ？ 2.回调的‘写入完成’先输出？
//    计算机基础知识 程序是载入的内存，cpu 去调度执行---- 
//    文件存在计算机哪? 磁盘速度跟cpu相比？cpu快
//    open cpu 发指令-----磁盘---扫磁道去文件 openSync在同步函数中呢，cpu 等磁盘共做完---下一步
//    异步就是不让cpu闲着,因为cpu快，在代码中可能会碰到阻塞的场景(磁盘,网络....)


   fs.open("./async6.txt", 'w', function (err,fd) {
    //console.log(arguments);
    if(err){
        console.log(err);
        
    }else{
        let msg='today我们学习异步文件写入，有点晕哦oooo'
        //fs.writeSync(fd,msg);
        //fs.closeSync(fd);
        bf =Buffer.from(msg);
        fs.write(fd,bf,function(err,writeNum,bf2){
            console.log(err);
            console.log(writeNum);
            //buffer 转字符串 bf.toString()
            console.log(bf2.toString());
            console.log("done!");
        });
        /**
         *  today天我们学习异步文件写入，有点晕哦  0123------------------------------------------------50
        write的参数: 
        fd: number,                          文件描述符
        buffer: TBuffer,buffer               对象
        offset: number | undefined | null,   偏移量--就是buffer的下标偏移的个数
        length: number | undefined | null,   长度---写入的个数
        position: number | undefined | null, 位置
        callback:                            回调函数 err,writeNum,buffer
         */
        console.log("写入完成!");
        //异步的文件关闭
        fs.close(fd,function(err){
            console.log("我被关闭了哦，别想我");
            console.log(err);
        })
    }
});
console.log('study node fs async ');



